package com.enlorenz.core.queue.transfer;

import java.util.Collection;
import java.util.Date;

import com.enlorenz.core.base.IName;

/**
 * 消息队列
 * 用于线程间的
 * 发送和接收消息
 * @author lcb
 */
public interface MessageQueue<T> extends IName{
	
	/**
	 * 放入消息
	 * @param msg 消息数据
	 */
	void addMsg(T msg);
	
	/**
	 * 放入消息集合
	 * @param collection 消息数据
	 */
	void addMsgColl(Collection<T> collection);
	
	/**
	 * 获取消息
	 * @return 消息数据
	 */
	T getMsg();
	
	/**
	 * 获取消息集合
	 * @return 消息数据集合
	 */
	Collection<T> getMsgColl();
	
	/**
	 * 获取队列长度
	 * @return 队列数据大小
	 */
	int size();
	
	
	/**
	 * 设置限制长度
	 * @param limitSize 队列数量限制参数
	 */
	void setLimitSize(Integer limitSize);
	
	/**
	 * 获取限制长度
	 * @return 队列数量限制参数
	 */
	Integer getLimitSize();
	
	/**
	 * 获取最近的消息进入时间
	 * @return 最近的消息进入时间
	 */
	Date getDateOfLastestInput();
	
	/**
	 * 获取最近的消息离开时间
	 * @return 最近的消息离开时间
	 */
	Date getDateOfLastestOutput();
	
}
